<?php

/**
 * \file
 * Classe `field`.
 */
 
namespace pilar\ObjectCollections /* \cond */ ; /* \endcond */
{

/**
 * Champ d'un membre d'une jointure d'une collection d'objets d'une
 * entité.
 *
 * \since 08/10/2008
 * \author Matthieu OVIEDO <matthieu.oviedo@gmail.com>
 */
class Field {

/**
 * Membre parent.
 *
 * \since 07/10/2008
 */
private $_parentMember;


/**
 * Champ d'entité type du champ.
 *
 * \since 07/10/2008
 */
private $_entityField;


/**
 * Valeur d'assignation du champ pour l'opération de mise à jour de la
 * collection d'objets parente.
 *
 * \todo
 * Obsolète ?
 *
 * \since 08/10/2008
 */
private $_value;


/**
 * indexe de la colonne associée au champ dans la requête de sélection de la
 * collection d'objets parente.
 *
 * \since 08/10/2008
 */
private $_sqlIdx;


/**
 * Constructeur.
 *
 * \since 08/10/2008
 * \param $perentMember Membre de jointure parent.
 * \param $entityField Champ d'entité type du champ.
 */
public function __construct($parentMember, $entityField) {
 $this->_parentMember = $parentMember;
 $this->_entityField = $entityField;
 $this->_value = null;
 $this->_sqlIdx = null;
}


/**
 * Accède à la valeur d'assignation courante du champ.
 *
 * \todo
 * Obsolète ?
 *
 * \since 08/10/2008
 * \return Valeur d'assignation courante du champ.
 */
public function assignValue() {
 return $this->_value;
}


/**
 * Change la valeur d'assignation du champ.
 *
 * \todo
 * Obsolète ?
 *
 * \since 08/10/2008
 * \param $value Nouvelle valeur d'assignation du champ.
 */
public function set($value) {
 $this->_value = $value;
}


/**
 * Code SQL du champ dans la sélection de la collection parente.
 *
 * \since 08/10/2008
 * \return Code SQL du champ.
 */
public function sqlCode() {
 return $this->_parentMember->parentJoin()->alias().'.`'.$this->_entityField->fullName().'`';
}


/**
 * Permet de spécifier l'indexe SQL du champ dans la requête de sélection
 * parente.
 *
 * \since 08/10/2008
 * \param $idx indexe à associer au champ.
 */
public function setSqlIdx($idx) {
 if($this->_sqlIdx == null) $this->_sqlIdx = $idx;
}


/**
 * Accède à l'indexe SQL du champ.
 *
 * \since 08/10/2008
 * \return Indexe SQL du champ.
 */
public function sqlIdx() {
 return $this->_sqlIdx;
}


} // Class.

} // Namespace.

?>
